package kuonjisai;

public class J19_callBy {

	// call by value vs call by reference
	// 값 이동시키기 swap
	//  a =3, b =5  --> swap ( 3, 5 ) ----> a = 5, b = 3;
	
	
	
	public static void main(String[] args) {
		int a = 3;int b = 5;  // 기본 자료형
		int[] aa = { 3 };		// 참조 자료형
		int[] bb = { 5 };
		System.out.println( "swap 호출전 a : " + a + ", b :  " + b );
		System.out.println( "swap 호출전 aa : " + aa[0] + ", bb :  " + bb[0] );

		swap( a, b );					// 기본 자료형
		swap( aa, bb );					// 참조 자료형
		System.out.println( a + ", " +aa + ", " + aa[0]);
		swap( aa[0], bb[0] );
		System.out.println( "swap 호출후 a : " + a + ", b :  " + b );
		System.out.println( "swap 호출후 aa : " + aa[0] + ", bb :  " + bb[0] );
		
	} // main
	
	// 값은 안바꾸고 계산만
	static void swap( int x , int y ){
		// x = y;    y = x;
		int tmp = x;
		x = y;
		y = tmp;
	
		System.out.println( "swap 실행중 a : " + x + ", b :  " + y );
			
	}
	// 값을 변경할 때에는 Array, Class 사용
	static void swap(int[] x, int[] y  ){
		int tmp = x[0];
		x[0] = y[0];
		y[0] = tmp;
		
		System.out.println( "swap 실행중 aa : " + x[0] + ", bb :  " + y[0] );
	
	}
	

} // class
